home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / MacHaskell 2.2 / progs / demo / X11 / animation / seafigs.hs < prev    next >
Encoding:
Text File  |  1994-09-27  |  5.6 KB  |  159 lines  |  [TEXT/YHS2]

  1. module Seafigs (sky,blue_sky,clouds,clouds2,gull,man,sun,vm,windmill,palm) where
  2.  
  3. import Animation
  4.  
  5. blue_sky:: Movie
  6. blue_sky = osc [box lightblue 1000 1000]
  7.  
  8. sky:: Color -> Movie
  9. sky c = osc [box c 1000 1000]
  10.  
  11. clouds2:: Movie
  12. clouds2 = apply (mov (i (cld_wid,0))) (rBESIDE[cld,cld])
  13.          where cld_wid = -(wid_Pic (cld!!0))
  14.                cld= apply (bPar [right,mov (repeat (250,-50))]) cldm1
  15.                cldm1=osc[cloud1]
  16.  
  17. clouds:: Movie
  18. clouds
  19.   = rOVERLAY
  20.       [apply (bPar [right,mov (repeat (250,-50))]) cloudm1,
  21.        apply (bPar [right,mov (repeat (0,-50))]) cloudm2,
  22.        apply (bPar [right,mov (repeat (250,-75))]) cloudm2,
  23.        apply (bPar [right,flipb,smaller,mov(repeat (200,-100))]) cloudm2,
  24.        apply (bPar [right,flipb,smaller,mov(repeat (300,-125))]) cloudm1,
  25.        apply (bPar [right,right,mov (repeat (-50,50))]) cloudm1]
  26.        where cloudm1 = osc [cloud1]
  27.              cloudm2 = osc [cloud2]
  28.  
  29.  
  30. cloud1 = [(white,ply)]
  31.          where ply = [(142,301),(169,309),(180,315),(192,312),
  32.                       (196,308),(202,302),(216,300),(224,308),
  33.                       (238,312),(258,311),(274,301),(278,283),
  34.                       (265,279),(246,279),(230,281),(197,286),
  35.                       (185,288),(167,287),(148,287),(136,292),
  36.                       (136,292),(142,301)]
  37.  
  38.  
  39. cloud2 = [(white,ply)]
  40.          where ply = [(51,262), (56,266),
  41.                       (66,265), (90,264), (92,266), (98,270),
  42.                       (111,268),(137,268),(155,266),(174,266),
  43.                       (183,262),(183,253),(162,251),(136,254),
  44.                       (132,250),(126,248),(115,252),(109,253),
  45.                       (98,252), (90,253), (88,254), (67,254),
  46.                       (56,252), (49,254), (47,259), (51,262)]
  47.  
  48. gull :: Movie
  49. gull = osc [gull1,gull2]
  50.  
  51. gull1 = [(black,[(2,4),(6,4),(9,2),(10,0),(11,2),
  52.                (16,4),(20,4)])]
  53.  
  54. gull2 = [(black,[(0,0),(2,2),(6,3),(9,2),(12,3),
  55.                (16,2),(18,0)])]
  56.  
  57. man :: Movie
  58. man = osc [man1,man2,man3]
  59.  
  60.  
  61. man1 = [(black,[(0,0),(10,0),(20,40),(30,60),(40,20),
  62.                 (60,0),(50,0)]),
  63.         (black,[(0,40),(20,60),(30,80),(50,70),(60,60)]),
  64.         (black,[(30,60),(30,100)]),
  65.         (black,[(30,100),(25,100),(20,105),(23,112),
  66.                 (20,115),(30,120),(35,120),(40,115),
  67.                 (40,110),(35,105),(30,100)])
  68.                  ]
  69.  
  70. man2 = [(black,[(20,0),(30,0),(20,40),(30,60),(45,30),
  71.                 (60,20),(50,0)]),
  72.         (black,[(0,60),(20,60),(20,80),(40,80),(50,60)]),
  73.         (black,[(30,60),(20,100)]),
  74.         (black,[(20,100),(15,100),(10,105),(13,112),
  75.                 (10,115),(20,120),(30,120),(30,115),
  76.                 (30,110),(25,105),(20,100)])
  77.                  ]
  78.  
  79. man3 = [(black,[(0,15),(5,10),(15,45),(30,60),(35,25),
  80.             (44,10),(35,0)]),
  81.         (black,[(10,40),(22,60),(20,80),(40,75),(45,44)]),
  82.         (black,[(30,60),(20,100)]),
  83.         (black,[(20,100),(19,100),(14,105),(17,112),
  84.                 (14,115),(24,120),(34,120),(34,115),
  85.                 (34,110),(29,105),(200,100)])
  86.                  ]
  87.  
  88. sun :: Movie
  89. sun = osc [sun']
  90.       where
  91.       sun' = reduce overlay_Pic [sun1,
  92.                                  twist_Pic (pi/24.0) sun1,
  93.                                  twist_Pic (pi/12.0) sun1]
  94.  
  95. sun1 = [(yellow,[(43,16),(18,27),(9,51),(20,71),(42,81),
  96.                  (66,73),(76,47),(69,25),(43,15),(43,16)])]
  97.  
  98. vm :: Movie
  99. vm =  osc[vm1,vm2]
  100.  
  101. vm1 = beside_Pic (box brown 10 15)
  102.                  (above_Pic light1 (box brown 40 80))
  103.       where light1 = box yellow 10 10
  104.  
  105. vm2 = beside_Pic (box brown 10 15)
  106.                  (reduce above_Pic [light,light2,box brown 40 80])
  107.       where light2 = over_Pic (box red 10 10) (box white 5 5)
  108.             light  = [ (red,[(5,5), (10,2), (0,30),(5,5)]),
  109.                        (red,[(20,2),(25,5),(30,30),(20,2)]),
  110.                        (red,[(15,15),(20,15),(15,50),(10,25)])]
  111.  
  112. windmill :: Movie
  113. windmill
  114.    = apply
  115.        (bpar (mov (repeat (unit*3,0))) (scale_rel (0,0) (repeat 3)))
  116.        (overlay body (apply (movto (repeat (100,400))) prop))
  117.  
  118. blade = osc [tri red (0,0) (100,0) (50,300)]
  119. prop  = apply cw fan
  120.  
  121. fan  = rOVERLAY [fan1,fan2,fan3,fan4]
  122. fan1 = blade
  123. fan2 = apply (rot (osc[(50,300)]) (osc[pi/2.0])) fan1
  124. fan3 = apply (rot (osc[(50,300)]) (osc[pi/2.0])) fan2
  125. fan4 = apply (rot (osc[(50,300)]) (osc[pi/2.0])) fan3
  126.  
  127. body = osc [ [(brown,[(0,0),(200,0),(170,300),
  128.                      (100,400),(30,300),(0,0)]) ] ]
  129.  
  130.  
  131. palm :: Movie
  132. palm
  133.   = osc palms
  134.     where palms = inbetween 3 palm1 (flipx_Pic 100 palm1)
  135.           palm1 = reduce overlay_Pic [trunk,frond1,frond2,frond3,frond4]
  136.               where frond1 = [ (green,[(50,60),(60,70),(80,60)]),
  137.                                (green,[(50,70),(60,80),(80,70)]),
  138.                                (green,[(50,80),(55,90),(70,80)]),
  139.                                (green,[(60,70),(55,90),(50,100)]) ]
  140.  
  141.                     frond2 = flipx_Pic 50 frond1
  142.  
  143.                     frond3 = [ (green,[(10,70),(5,80)]),
  144.                                (green,[(10,80),(10,90)]),
  145.                                (green,[(20,90),(20,100)]),
  146.                                (green,[(30,95),(40,104)]),
  147.                                (green,[(5,80),(20,100),(40,104),
  148.                                        (50,100)])]
  149.  
  150.                     frond4 = [(green,[(0,100),(5,110)]),
  151.                               (green,[(15,105),(15,115)]),
  152.                               (green,[(25,105),(30,115)]),
  153.                               (green,[(35,105),(40,115)]),
  154.                               (green,[(5,110),(30,115),(50,110),
  155.                                       (50,100)])]
  156.  
  157.                     trunk  = [(brown,[(100,0),(95,40),(80,80),
  158.                                       (70,90),(60,97),(50,100)])]
  159.